from django.db import models
from django.utils.safestring import mark_safe


# Create your models here.
class User(models.Model):
    """
    用户表：
    员工信息表用户、密码、职位、公司名（子、总公司）、手机最后一次登录时间【用户详细信息】
    """
    user_name = models.CharField(max_length=32, verbose_name='用户名', unique=True)  # 用户名
    pass_word = models.CharField(max_length=32, verbose_name='密码')  # 密码
    position = models.CharField(max_length=32, verbose_name='职位')  # 职位
    company = models.CharField(max_length=32, choices=(('0', '北京总公司'), ('1', '石家庄分公司'), ('2', '广州分公司')),
                               verbose_name='公司')  # 公司
    phone = models.CharField(max_length=11, verbose_name='手机号')  # 电话
    last_time = models.DateTimeField(null=True, blank=True, verbose_name='上次登录时间')  # 最后一次登录时间，编辑新增auto_now
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='注册时间')  # 最后一次登录时间，编辑新增auto_now
    is_active = models.BooleanField(default=True)  # 标记是否注销
    avatar = models.ImageField(upload_to='img/avatar', default='img/avatar/default.jpeg')  # 创建头像照片

    def __str__(self):
        return self.user_name


class Category(models.Model):
    """
    板块表：

    """
    title = models.CharField(max_length=64, verbose_name='板块标题')

    def __str__(self):
        return self.title


class Article(models.Model):
    """
    文章表：
    标题  文章摘要  发表时间  作者  板块  创建时间  更新时间  删除状态
    """

    title = models.CharField(max_length=64, verbose_name='文章标题')
    abstract = models.CharField(max_length=256, verbose_name='文章摘要')
    author = models.ForeignKey('User', on_delete=models.DO_NOTHING, null=True, verbose_name='作者')  # 关联删除模式，为不操作。允许数据为空
    category = models.ForeignKey('Category', on_delete=models.DO_NOTHING, blank=True, null=True,
                                 verbose_name='板块')  # 关联删除模式，为不操作。允许数据为空
    creat_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
    update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
    publish_status = models.BooleanField(default=False, choices=((False, '未发布'), (True, '发布')), verbose_name='发布状态')

    detail = models.OneToOneField('ArticleDetail', on_delete=models.DO_NOTHING, verbose_name='文章内容')  # 文章内容

    def show_publish_status(self):
        # 让html文件中的样式随着查询出的数据而改变
        color_dic = {
            True: 'green',
            False: '#7b7b25'
        }
        return mark_safe(
            '<span style="background: {}; color: white; margin: 2px">{}</span>'.format(color_dic[self.publish_status],
                                                                                       self.get_publish_status_display()))


from ckeditor_uploader.fields import RichTextUploadingField


# 文章内容表
class ArticleDetail(models.Model):
    """
    文章表拆分内容
    """
    content = RichTextUploadingField(verbose_name='文章内容')


class Comment(models.Model):
    """
    评论表：
    评论者  评论内容  评论文章  评论时间  审核状态
    """
    author = models.ForeignKey(verbose_name='评论者', to='User', on_delete=models.DO_NOTHING)
    content = models.TextField(verbose_name='评论内容')
    article = models.ForeignKey(verbose_name='评论文章', to='Article', on_delete=models.DO_NOTHING)
    time = models.DateTimeField(verbose_name='评论时间', auto_now_add=True)
    status = models.BooleanField(verbose_name='审核状态', default=True)
